#ifndef TEXTUREMANAGER_H
#define TEXTUREMANAGER_H

#include <iostream>
#include <string>
#include <map>
#include <SFML/Graphics/Image.hpp>

class TextureManager{


private:

	static TextureManager *instance;//única instancia de la clase (singleton)
	
	std::map<std::string, sf::Image>textures;//mapa que hace las veces de diccionario y almacena las texturas y los nombres de archivo
	
	//Constructor
	TextureManager();

	//Carga una nueva textura cuando no está en el mapa y devuelve una referencia a la misma
	const sf::Image &LoadTexture(const std::string &name);

public:
	//devuelve el manejador de texturas
	static TextureManager &GetInstance();

	//Busca y devuelve la textura según el nombre dado
	const sf::Image &GetTexture(const std::string &name);

	//Igual que GetTexture pero con el operador []
	const sf::Image &operator[](const std::string &name);

	//Elimina de memora la textura cargada con el nombre
	void UnloadTexture(const std::string &name);

	
	

};
#endif
